home *** CD-ROM | disk | FTP | other *** search
- //----------------------------------------------------------------------------
- // File: packets.h
- //
- // Desc: see main.cpp
- //
- // Copyright (c) 1999-2001 Microsoft Corp. All rights reserved.
- //-----------------------------------------------------------------------------
- #ifndef _PACKETS_H
- #define _PACKETS_H
-
- #include "Trig.h"
-
- #pragma pack(push)
- #pragma pack(1)
-
- #define PACK_ARRAY_SIZE 10 //Set the number of elements in our pack array to 10.
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc:
- //-----------------------------------------------------------------------------
- enum
- {
- PACKETTYPE_SERVER_CONFIG, // first packet sent
- PACKETTYPE_CLIENT_VERSION, // client responds to PACKETTYPE_SERVER_CONFIG w/ this
- PACKETTYPE_SERVER_ACKVERSION, // server then responds to PACKETTYPE_CLIENT_VERSION w/ this and game begins
- PACKETTYPE_CLIENT_POS, // sent to server as client moves
- PACKETTYPE_SERVER_ACKPOS // sent to client as server acks the PACKETTYPE_CLIENT_POS packets
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc: Base class for packets sent from client to server
- //-----------------------------------------------------------------------------
- struct ClientPacket
- {
- ClientPacket();
- ClientPacket( WORD type ) :
- wType(type) {};
-
- WORD wType;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc:
- //-----------------------------------------------------------------------------
- struct ClientPosPacket : public ClientPacket
- {
- ClientPosPacket();
- ClientPosPacket( float x , float y, ANGLE cameraYaw )
- : ClientPacket( PACKETTYPE_CLIENT_POS ) , fX(x) , fY(y), aCameraYaw(cameraYaw) {};
-
- float fX,fY;
- ANGLE aCameraYaw;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc:
- //-----------------------------------------------------------------------------
- struct ClientVersionPacket : public ClientPacket
- {
- ClientVersionPacket();
- ClientVersionPacket( DWORD version )
- : ClientPacket( PACKETTYPE_CLIENT_VERSION ) , dwVersion(version) {};
-
- DWORD dwVersion;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc: Structure containing client net configuration data.
- // The server sends this to clients
- //-----------------------------------------------------------------------------
- struct ClientNetConfig
- {
- DWORD dwMazeWidth;
- DWORD dwMazeHeight;
- DWORD dwThreadWait;
- WORD wUpdateRate;
- WORD wTimeout;
- WORD wClientPackSizeArray[PACK_ARRAY_SIZE]; //Array of 10 custom sizes passed in by user.
- WORD wServerPackSizeArray[PACK_ARRAY_SIZE]; //Array of 10 custom server sizes.
- BYTE ubClientPackIndex;
- BYTE ubServerPackIndex;
-
- BYTE ubReliableRate; // Percentage of packets to be transmitted reliably
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc: Base class for packets sent from server to client
- //-----------------------------------------------------------------------------
- struct ServerPacket
- {
- ServerPacket();
- ServerPacket( WORD type ) : wType(type) {};
-
- WORD wType;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc: Configuration data send from server to client
- //-----------------------------------------------------------------------------
- struct ServerAckVersionPacket : public ServerPacket
- {
- ServerAckVersionPacket();
- ServerAckVersionPacket( BOOL accepted, DWORD clientID ) :
- ServerPacket(PACKETTYPE_SERVER_ACKVERSION), bAccepted(accepted), dwClientID(clientID) {};
-
- DWORD dwClientID;
- BOOL bAccepted;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc: Configuration data send from server to client
- //-----------------------------------------------------------------------------
- struct ServerConfigPacket : public ServerPacket
- {
- ServerConfigPacket();
- ServerConfigPacket( const ClientNetConfig& config ) :
- ServerPacket(PACKETTYPE_SERVER_CONFIG) , Config(config) {};
-
- ClientNetConfig Config;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc: Chunk of client data for server send to a client
- //-----------------------------------------------------------------------------
- struct PlayerStatePacket
- {
- DWORD dwID;
- float fX;
- float fY;
- ANGLE aCameraYaw;
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc:
- //-----------------------------------------------------------------------------
- struct ServerAckPacket : public ServerPacket
- {
- ServerAckPacket();
- ServerAckPacket( DWORD playercount )
- : ServerPacket(PACKETTYPE_SERVER_ACKPOS),
- wPlayerCount(WORD(playercount)) {};
-
- WORD wPlayerCount; // Count of total players on server
- WORD wPlayerStatePacketCount; // Count of following PlayerStatePacket structures
- };
-
-
- #pragma pack(pop)
-
- #endif
-